Security News
Combatting Alert Fatigue by Prioritizing Malicious Intent
In 2023, data breaches surged 78% from zero-day and supply chain attacks, but developers are still buried under alerts that are unable to prevent these threats.
The imagemin npm package is a powerful tool for image compression and optimization. It allows developers to reduce the size of images without losing quality, which can significantly improve the performance of web applications by reducing load times.
Basic Image Compression
This code demonstrates how to use imagemin to compress JPEG and PNG images. The images are taken from the 'images' directory and the compressed versions are saved in the 'build/images' directory. The quality of JPEG images is set to 75, and the quality of PNG images is set between 60% and 80%.
const imagemin = require('imagemin');
const imageminMozjpeg = require('imagemin-mozjpeg');
const imageminPngquant = require('imagemin-pngquant');
(async () => {
const files = await imagemin(['images/*.{jpg,png}'], {
destination: 'build/images',
plugins: [
imageminMozjpeg({quality: 75}),
imageminPngquant({quality: [0.6, 0.8]})
]
});
console.log(files);
})();
GIF Optimization
This code demonstrates how to optimize GIF images using imagemin. The GIF images are taken from the 'images' directory and the optimized versions are saved in the 'build/images' directory. The optimization level is set to 3, which is the highest level of optimization.
const imagemin = require('imagemin');
const imageminGifsicle = require('imagemin-gifsicle');
(async () => {
const files = await imagemin(['images/*.gif'], {
destination: 'build/images',
plugins: [
imageminGifsicle({optimizationLevel: 3})
]
});
console.log(files);
})();
SVG Optimization
This code demonstrates how to optimize SVG images using imagemin. The SVG images are taken from the 'images' directory and the optimized versions are saved in the 'build/images' directory. The SVGO plugin is configured to keep the viewBox attribute and not to remove IDs.
const imagemin = require('imagemin');
const imageminSvgo = require('imagemin-svgo');
(async () => {
const files = await imagemin(['images/*.svg'], {
destination: 'build/images',
plugins: [
imageminSvgo({
plugins: [
{removeViewBox: false},
{cleanupIDs: false}
]
})
]
});
console.log(files);
})();
Sharp is a high-performance image processing library that supports various image formats. It is known for its speed and efficiency, making it a popular choice for image resizing, cropping, and format conversion. Unlike imagemin, which focuses on compression and optimization, sharp provides a broader range of image manipulation functionalities.
Jimp is a pure JavaScript image processing library that does not require any external dependencies. It supports a wide range of image manipulation features, including resizing, cropping, and color adjustments. While imagemin is primarily used for image compression, Jimp offers a more comprehensive set of image editing tools.
Image-webpack-loader is a loader for webpack that optimizes images during the build process. It uses imagemin under the hood but integrates seamlessly with webpack, making it a convenient choice for developers who are already using webpack for their build process. It provides similar functionalities to imagemin but is designed to work specifically within the webpack ecosystem.
Minify images seamlessly
$ npm install --save imagemin
const imagemin = require('imagemin');
const imageminJpegtran = require('imagemin-jpegtran');
const imageminPngquant = require('imagemin-pngquant');
imagemin(['images/*.{jpg,png}'], 'build/images', {
plugins: [
imageminJpegtran(),
imageminPngquant({quality: '65-80'})
]
}).then(files => {
console.log(files);
//=> [{data: <Buffer 89 50 4e …>, path: 'build/images/foo.jpg'}, …]
});
Returns Promise<Object[]>
in the format {data: Buffer, path: String}
.
Type: Array
Files to be optimized. See supported minimatch
patterns.
Type: string
Set the destination folder to where your files will be written. If no destination is specified no files will be written.
Type: Object
Type: Array
Plugins to use.
Returns Promise<Buffer>
.
Type: Buffer
Buffer to optimize.
Type: Object
Type: Array
Plugins to use.
MIT © imagemin
FAQs
Minify images seamlessly
The npm package imagemin receives a total of 776,543 weekly downloads. As such, imagemin popularity was classified as popular.
We found that imagemin demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 6 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
In 2023, data breaches surged 78% from zero-day and supply chain attacks, but developers are still buried under alerts that are unable to prevent these threats.
Security News
Solo open source maintainers face burnout and security challenges, with 60% unpaid and 60% considering quitting.
Security News
License exceptions modify the terms of open source licenses, impacting how software can be used, modified, and distributed. Developers should be aware of the legal implications of these exceptions.